package main.java.learning.directory.Work.数组.Ac;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
 * @author aichao
 * 数组中找到重复次数最多的数字
 * 使用map判断数组中是否存在，不存在设值1,再出现+1
 * 排序整个map的value,最末尾arr.length-1 的下标值是最大次数
 * 循环整个map,map的getvalue == 最大次数 ,打印key和value
 */
public class FindMostInArrayDay7 {
    public static void main(String[] args) {
        int arr [] = {1,2,3,4,5,5,4,3,2,1,1,2};
        findMostInArray(arr);
    }
    public static void findMostInArray(int[] array ){
        Map<Integer,Integer> map = new HashMap<>();
        for (int i = 0; i <array.length ; i++) {
            if(map.containsKey(array[i])){
                int tmp = map.get(array[i]);
                map.put(array[i],tmp+1);
            }else{
                map.put(array[i],1);
            }
        }
        Object[] arrMap = map.values().toArray();
        Arrays.sort(arrMap);
        for (Map.Entry<Integer,Integer> m: map.entrySet()
        ) {
            if(m.getValue()==arrMap[arrMap.length-1]){
                System.out.println("最多出现的数字为:"+m.getKey()+"    次数为:"+m.getValue());
            }
        }
    }
}
